//********************************************************************
//  UsoCeluar.java       Author: clase de OOP
//
//  Clase Principal de Aplicacion
//********************************************************************
import  java.util.Scanner;
public class Aplicacion
{
   
   //-----------------------------------------------------------------
   // 
   //-----------------------------------------------------------------
   public static void main (String[] args)
   {  String eleccion=" ", decision=" ", menu_principal="Bienvenido a Naviera Sociedad Anonima:\nEn un momento atendemos su solicitud:\n--------------------------------------\n1. Ingresar como Administrador\n2. Ingresar como Usuario\n0. Salir";
      String menu_usuario="En un momento atendemos su solicitud:\n--------------------------------------\n1. Importar\n2. Ver estado de la naviera\n3. Realizar el Recorrido\n0. Salir";
      String menu_admin="En un momento atendemos su solicitud:\n--------------------------------------\n1. Agregar Barco\n2. Agregar Puerto\n0. Salir";
      String menu_mostrar="\n--------------------------------------\n1. Ver Barco\n2. Ver Puerto\n0. Salir";
      String menu_Barco="\n--------------------------------------\n1. Ver Contenedores\n2. Ver Ruta\n0. Salir";	  
	  String contrasena="12345", verificacion;
	  //   String menu_usuario="En un momento atendemos su solicitud:\n--------------------------------------\n1. Ver Barcos\n2. Puertos registrados \n3. Salir";
          
		  //***********************************************************************
          // Variables temporales para almacenamiento de la solicitud de importador
          //***********************************************************************
          String name_1, name_2, name_description;  
          Naviera maritima= new Naviera();
          int numero=1, seleccion, seleccion1, ident1, ident2, ident0, ident3,a=0, aux;
		  Menu elecciones= new Menu();
		  
		  Scanner teclado= new Scanner(System.in);
          while (numero!=0)
          {
				
				numero=elecciones.despliegue(menu_principal,0,0); 
				switch(numero)    
				{   
					case 0:
								break;
					case 1:
					{	a=0;
						System.out.println("Usted selecciono entrar como administrador");
						while (a<3)
						{
							verificacion=elecciones.IngresoChar("Ingrese la contrasena");
							if (contrasena.equals(verificacion))
							{
								seleccion=elecciones.despliegue(menu_admin,0,0);
								switch(seleccion)
								{
									case 0:
										break;
									
									case 1:
									{									
										System.out.println("--------------------------------------------\n");
										name_1= elecciones.IngresoChar("--------Ingrese nombre del capitan---------------");
										maritima.addBarco(name_1);
										break;
									}
									case 2:
									{
										System.out.println("--------------------------------------------\n");
										name_1= elecciones.IngresoChar("--------Ingrese nombre del puerto---------------");
										name_2= elecciones.IngresoChar("-----------Ingrese Pais del Puerto-----------");
										maritima.addPuertos_1(name_1, name_2);	
										maritima.actualRuta ();
										break;
									}
								}
								break;
							}
							else
								System.out.println("Contrasena incorrecta");
							a+=1;
						} 								
						break;
					}
					case 2:
					{
					  System.out.println("\nUsted ha ingresado a la aplicacion como usuario\n");
					  seleccion=elecciones.despliegue(menu_usuario,0,0); 
					  switch (seleccion)
						{
						 case 1:
							{ 
								System.out.println("--------------------------------------------\n");
								ident0=elecciones.despliegue("Escoja ID del Barco-----------------\n", maritima.getCantBarcos(),1);														
								System.out.println(maritima.getPuertos());
								ident1=elecciones.despliegue("-----Escoja ID puerto de origen para este contenedor--------\n", maritima.getCantPuertos(),1);
								ident2=elecciones.despliegue("-----Escoja ID puerto de destino para este contenedor--------\n", maritima.getCantPuertos(),1);	
								while(true)
								{
									System.out.println("--------------------------------------------------\n");
									name_1= elecciones.IngresoChar("Ingrese su Nombre---------------");
									name_2= elecciones.IngresoChar("Ingrese nombre de su Compania-----------");
									name_description= elecciones.IngresoChar("Ingrese una pequena descripcion----------");
									ident3=elecciones.despliegue("Ingrese el tamano de su carga en Toneladas metricas-----------\n",0,0);
									maritima.consolidarCarga(ident0 ,name_1, name_2,ident3,name_description, maritima.getPuerto_(ident1), 
									maritima.getPuerto_(ident2), ident2, ident1);
									
									aux=elecciones.despliegue("PRESS num>0 PARA SEGUIR LLENANDO ESTE CONTENEDOR \n0. Salir",0,0);
									if(aux==0)
										break;
								}
								break;
							}
						 case 2:
							{
								seleccion1=elecciones.despliegue(menu_mostrar,3,1);
								if(seleccion1==1)
								{
									ident2=elecciones.despliegue("Ingrese ID Barco",maritima.getCantBarcos(),1);	
									ident1=elecciones.despliegue(menu_Barco,3,1);	
									if(ident1==2)
										System.out.println(maritima.getBarco(ident2).getRuta());
									else if(ident1==1)
									{
										if(maritima.getBarco(ident2).getContenedores_Cargados()>0)
										{
											ident3=elecciones.despliegue("Ingrese ID Contenedor",maritima.getBarco(ident2).getContenedores_Cargados(),1);
											System.out.println(maritima.getBarco(ident2).getContenedor(ident3));
										}
										else
											System.out.println("\tEste barco no cuenta con ningun contenedor\n");
									}
								}
								else if(seleccion1==2)
								{
									ident2=elecciones.despliegue("Ingrese ID Puerto",maritima.getCantPuertos(),1);	
									ident1=elecciones.despliegue("\n--------------------------------------\n1. Ver Contenedores Cargados\n2. Ver Contenedores Descargados\n0. Salir",3,1);	
									if(ident1==1)
										{
										if(maritima.getPuerto_(ident2).getContenedores_Cargados_1()>0)
											{
											ident3=elecciones.despliegue("Ingrese ID Contenedor",maritima.getPuerto_(ident2).getContenedores_Cargados_1(),1);
											System.out.println(maritima.getPuerto_(ident2).getContenedor_1(ident3));
											}
										else
											System.out.println("\tEste barco no cuenta con ningun contenedor\n");
										
										}	
									else if(ident1==2)
									{
										if(maritima.getPuerto_(ident2).getContenedores_Descargados_ ()>0)
											{
											ident3=elecciones.despliegue("Ingrese ID Contenedor",maritima.getPuerto_(ident2).getContenedores_Descargados_ (),1);
											System.out.println(maritima.getPuerto_(ident2).getContenedor_2(ident3));
											}
										else
											System.out.println("\tEste barco no cuenta con ningun contenedor descargado\n");										
									}
								}								
								break;
							}
						 case 3:
							{
							maritima.hacerRecorrido();
							break;
							}
						 default:
							System.out.println("\tLa opcion seleccionada no existe\n");
												
						} 
						
					  break;
					}
					default:
							System.out.println("La opcion seleccionada no existe");
			   }
			   //maritima.hacerRecorrido();
      
             }
        }

}
